home *** CD-ROM | disk | FTP | other *** search
/ Super PC 34 / Super PC 34 (Shareware).iso / spc / SONIDO / AMUSIC11 / SOURCES / PAS / PLAY_PAS.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1995-12-28  |  2.0 KB  |  92 lines

  1. PROGRAM PlayAMD;
  2.  
  3. USES CRT;
  4.  
  5.  
  6. {$F+}
  7. {$L AMDOBJ.OBJ}
  8. PROCEDURE _AdlibPlayer; near; EXTERNAL;
  9. PROCEDURE _StopAdlib; near; EXTERNAL;
  10. PROCEDURE _InitAdlib; near; EXTERNAL;
  11. {$F-}
  12.  
  13.  
  14. type AMD_Song = record
  15.               filename : string;
  16.               filesize : integer;
  17.               SongOK   : boolean;
  18.               Song     : pointer;
  19.               MyBuff   : pointer;
  20.      end;
  21.  
  22. var Musik : AMD_Song;
  23.  
  24.  
  25. PROCEDURE LoadSong (VAR Dest : AMD_Song);
  26.   VAR F : FILE;
  27.   BEGIN
  28.     ASSIGN (F,Dest.Filename);
  29.     {$I-} RESET (F,1); {$I+}
  30.     IF IORESULT <> 0
  31.       THEN Dest.SongOK := FALSE
  32.       ELSE
  33.         BEGIN
  34.           Dest.filesize := FILESIZE (F);
  35.           GETMEM (Dest.Song,Dest.filesize);
  36.           GETMEM (Dest.MyBuff,1314);
  37.           BLOCKREAD (F,Dest.Song^,Dest.filesize);
  38.           Dest.SongOK := TRUE;
  39.           CLOSE (F)
  40.         END
  41.   END;
  42.  
  43. PROCEDURE ClearSong (VAR Dest : AMD_Song);
  44.   BEGIN
  45.     Dest.SongOK := FALSE;
  46.     FREEMEM (Dest.Song,Dest.filesize);
  47.     FREEMEM (Dest.MyBuff,1314);
  48.     Dest.filesize := 0
  49.   END;
  50.  
  51. var i : byte;
  52.  
  53.  
  54. BEGIN
  55.   IF PARAMCOUNT = 1
  56.     THEN
  57.       BEGIN
  58.         Musik.filename := PARAMSTR (1);
  59.         LoadSong (Musik);
  60.         IF Musik.SongOK
  61.           THEN
  62.             BEGIN
  63.               writeln('AMD Player (Pascal Interface)');
  64.               asm
  65.                  push   ds
  66.                  push   es
  67.                  les    di,Musik.MyBuff
  68.                  lds    si,Musik.Song
  69.                  xor    al,al           (* irqmode!! *)
  70.                  call   _InitAdlib
  71.                  pop    es
  72.                  pop    ds
  73.               end;
  74.               repeat until keypressed;
  75.  
  76.               asm
  77.                  call   _StopAdlib
  78.               end;
  79.  
  80.               ClearSong (Musik);
  81.             END
  82.           ELSE
  83.             BEGIN
  84.               WRITELN ('ERROR: Couldn''t find the specified file!');
  85.             END;
  86.       END
  87.     ELSE
  88.       BEGIN
  89.         WRITELN ('ERROR: Syntax is PLAYAMD filename.amd !');
  90.       END;
  91. END.
  92.